﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Amazon.Route53.DataContracts
{
    public enum AWSChangeType
    {
        CreateHostedZone,
        ChanceResourceRecordSet,
        DeleteHostedZone,
    }

    /// <summary>
    /// Domain Type. Help is extracted from www.dns30.com
    /// </summary>
    public enum DomainNameType
    {
        /// <summary>
        /// /// A record is used to translate a hostname to its corresponding IP address.It is associated with IPv4.
        /// </summary>
        A,
        /// <summary>
        /// AAAA record is used to translate a hostname to its corresponding IP address.It is associated with IPv6.
        /// </summary>
        AAAA,
        /// <summary>
        /// A CNAME specifies a alias or nickname for your real domain name. 
        /// This is used to run multiple services from single IP address. 
        /// For each service, you can have an entry in DNS 
        /// </summary>
        CNAME,
        /// <summary>
        /// A MX record is also known as Mail Exchanger Record. The role of MX record is to identify an email server available to the domain. In other words, it specifies the IP address of the mail server for the recipient’s domain. One domain can have multiple MX records
        /// </summary>
        MX,
        /// <summary>
        /// NS (Name Server) records represent the names of DNS servers for a certain zone.
        /// The role of NS records are to determine which authoritative name servers are used for a domain. 
        /// It handles resolving your domain name to an IP address. 
        /// It represents the basic structure on which the DNS is built.  
        /// Amazon Route 53 automatically creates four NS records for the zone by default.
        /// </summary>
        NS,
        /// <summary>
        /// This record is inverse of 'A' Records. It is used in Reserve map zone files to map an IP address to a host name. 
        /// PTR Records are created for IP addresses, not Domain Names. 
        /// It is not like the other SOA records. Pointer records use only reverse domains (IN-ADDR.ARPA). 
        /// For each Internet address there must be exactly 1 PTR record.
        /// </summary>
        PTR,
        /// <summary>
        /// SOA specifies authoritative information about a DNS zone.
        /// This should be the first resource record in any domain name system (DNS) zone file.
        /// It includes the information such as  primary name server, the email of the domain administrator, 
        /// the domain serial number, refresh time, retry time, expire time and TTL.
        /// </summary>
        SOA,
        /// <summary>
        /// SPF' (Sender Policy Framework) record type allows you to specify which hosts are allowed or 
        /// authorized to send mail for the sender's domain. 
        /// It is an e-mail validation system which validate legitimate email sources from a domain. 
        /// This information should be define in Text Record (TXT)
        /// </summary>
        SPF,
        /// <summary>
        /// SRV resource records map the name of a service to the name of a server offering that service. 
        /// Administrators are allowed to use several servers for a single domain, to move services from host to host easily, 
        /// and to designate some hosts as primary servers for a service. 
        /// Some Internet Protocols such as the SIP  and  XMPP often require SRV support by network elements. i.e. 
        /// the hostname and port number of servers for specified services. 
        /// The SRV identifies the host that will support particular services. 
        /// It is not widely supported, but mostly supported by OpenLDAP and increasingly by VoIP systems in conjunction with the NAPTR.
        /// </summary>
        SRV,
        /// <summary>
        /// The TXT record type is used to specify the free text information that may be concern 
        /// with SPF record type to validate email source
        /// </summary>
        TXT,
    }

    public enum ChangeAction
    {
        CREATE,
        DELETE,
    }
}
